﻿using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JQData.Core.DbModel
{
    public class StockBasic : EntityNotTenant
    {
        /// <summary>
        /// Ts 代码
        /// </summary>
        [MaxLength(30)]
        [Required]
        public string TsCode { get; set; }
        /// <summary>
        /// 股票代码
        /// </summary>
        [MaxLength(30)]
        [Required]

        public string Code { get; set; } // 股票代码
        /// <summary>
        /// 股票名称
        /// </summary>
        [MaxLength(50)]
        public string Name { get; set; } // 股票名称
        /// <summary>
        /// 地域
        /// </summary>
        [MaxLength(30)]
        public string Area { get; set; } // 地域
        /// <summary>
        /// 所属行业
        /// </summary>
        [MaxLength(30)]
        public string Industry { get; set; } // 所属行业

        /// <summary>
        /// 股票全称
        /// </summary>
        [MaxLength(50)]
        public string FullName { get; set; } // 股票全称

        /// <summary>
        /// 英文全称
        /// </summary>
        [MaxLength(50)]
        public string EnName { get; set; } // 英文全称

        /// <summary>
        /// 其他别名用逗号分隔
        /// </summary>
        [MaxLength(500)]
        public string OtherName { get; set; } // 其他名称（如英文名等）

        /// <summary>
        /// 拼音缩写
        /// </summary>
        [MaxLength(50)]
        public string Cnspell { get; set; } // 拼音缩写

        /// <summary>
        /// 市场类型（主板/创业板/科创板/CDR）
        /// </summary>
        [MaxLength(10)]
        public string Market { get; set; } // 市场类型（主板/创业板/科创板/CDR）

        /// <summary>
        /// 交易所代码
        /// </summary>
        [MaxLength(30)]
        public string Exchange { get; set; } // 交易所代码

        /// <summary>
        /// 交易货币
        /// </summary>
        [MaxLength(10)]
        public string CurrType { get; set; } // 交易货币
        /// <summary>
        /// 上市状态
        /// </summary>
        [MaxLength(10)]
        [Column(TypeName = "nvarchar(10)")]
        public ListingStatus ListingStatus { get; set; } // 上市状态 L上市 D退市 P暂停上市

        /// <summary>
        /// 上市日期
        /// </summary>
        public DateOnly ListingDate { get; set; } // 上市日期
        /// <summary>
        /// 退市日期
        /// </summary>
        public DateOnly? DelistDate { get; set; } // 退市日期

        /// <summary>
        /// 是否沪深港通标的，N否 H沪股通 S深股通
        /// </summary>
        [MaxLength(10)]
        public string IsHS { get; set; } // 是否沪深港通标的，N否 H沪股通 S深股通

        /// <summary>
        /// 实控人名称
        /// </summary>
        [MaxLength(50)]
        public string ActName { get; set; } // 实控人名称

        /// <summary>
        /// 实控人企业性质
        /// </summary>
        [MaxLength(30)]
        public string ActEntType { get; set; } // 实控人企业性质


        // 配置数据库实体
        public void Configure(EntityTypeBuilder<StockBasic> entityBuilder, DbContext dbContext, Type dbContextLocator)
        {
            entityBuilder.HasIndex(e => e.TsCode).IsUnique();
        }

    }

    public enum ListingStatus
    {
        上市, 退市, 暂停上市
    }
}
